/*
 * meituan.com Inc.
 * Copyright (c) 2010-2018 All Rights Reserved.
 */
package practice.v1;

import org.junit.Test;

import java.util.Arrays;
import java.util.Random;

/**
 * <p>
 *
 * </p>
 * @author LvJing
 * @version $Id:BubbleSort.java v1.0 2018/8/11 上午11:37 LvJing Exp $
 */
public class BubbleSort {

    public int[] bubbleSort(int[] arr) {
        if (arr == null || arr.length <= 1)
            return arr;

        // 冒泡排序思路为，在于交换二字，第一趟从头开始相邻两个元素比较，后者大于前者，就把它们交换，直到遍历到最后一个元素，这是最后一个元素就是最大的；
        // 第二趟只遍历到倒数第二个。。。。
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j+1]) {
                    swap(arr, j, j+1);
                }
            }
        }
        return arr;
    }

    private void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    @Test
    public void test() {
        Random random = new Random();
        int[] arr = new int[10];
        for (int i = 0; i < 10; i++)
            arr[i] = random.nextInt(100);
        System.out.println(Arrays.toString(arr));
        bubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
